iT邦幫忙

2024 iThome 鐵人賽

DAY 0
0
自我挑戰組

重新開始 elasticsearch 系列 第 22

2024 鐵人賽 Day23: ES as Vector DB IV

  • 分享至 

  • xImage
  •  

前一篇在進行 knn 搜尋的時候,發現了非常不合理的搜尋結果:

當搜尋『黑道家族勾心鬥角』時,最相似的電影居然是溫馨家庭喜劇;再加上前面幾筆內容不同但相似性分數都蠻相近的,做了兩個可能的問題假設:

  1. 這個語言模型可能沒有針對中文進行訓練
  2. description 的 token 數超過 model 的限制(sentence-transformers/all-MiniLM-L6-v2 的限制是 128 個)

hugging-face 的論壇貼文上,說明這個 model 一開始確實是以英文為主,後續才會轉換成其他語言(但目前沒有找到確實有支援其他語言的說明)。

因此找了另外一個確實說明有支援多語言的模型:intfloat/multilingual-e5-small 作為 word vector 翻譯器,使用一樣的 query 得到第一筆是

『精銳部隊』:巴西本土票房累積收益,突破千萬美金大關 。貪污腐敗的巴西,警察個個以權謀私,無法無天的毒販霸據整個貧民窟,導致黑白兩道利益輸送關係錯綜複雜。直到教宗即將造訪,精銳部隊隊長納西門圖奉命橫掃貧民窟毒梟。速戰速決以換取短暫的和平,取勝的捷徑,就是以暴制暴。(後略)

感覺合理很多。

但當我們繼續往下看,第二筆結果

『羅生門』:本片故事發生在戰亂、天災、疾病連綿不斷的平安朝代。某日,在都城附近大澤中發現武士金澤武弘被殺,被控殺害的盜賊多襄丸,武弘之妻真砂,召喚武弘靈魂的靈媒、目擊證人行腳僧及發現金澤屍體的樵夫殼等人以四個不同的時間,不同的方式各自說出供詞,片中幾位要角表現十分稱職,對白精湛,耐人尋味。主要關係者在劇中各懷不同之想法,觀眾在觀賞本片之餘,不妨仔細探究一番。(後略)

雖然是有一些燒殺擄掠,但完全不是黑幫,也沒有勾心鬥角啊 QQ

雖然 intfloat/multilingual-e5-small (後簡稱 e5-small)的結果顯著比 sentence-transformers/all-MiniLM-L6-v2 (後簡稱 L6-v2)好,但 e5-small 的 token 限制是 512,是 L6-v2 的 4 倍;所以究竟是模型對語言的支援程度問題還是 token 數問題,還是很難說。

KNN query 也可以搭配全文搜索來調整最終結果,下一篇會開始嘗試可以怎麼做結合。


補充資訊:

其實有針對這兩個模型做了一個簡單的測試想排除 token 長度的因素,但基於我對 word vector 知識的限制,還是很難判斷到底原因是什麼,所以就不放在正文內。

實驗的想法是這樣的:在英文和中文都挑選兩句完全不相關的短字句(排除 token 限制因素),分別用兩個模型轉換成各自的 word vector,若模型沒有提供對中文的支援,則應該會認為這兩句話很相近(因為沒有用這個語料訓練應該都看不懂)。

實驗的結果如下:

中文實驗語句:

  1. 『溫馨感人家庭喜劇』
  2. 『黑道幫派勾心鬥角』

sentence-transformers/all-MiniLM-L6-v2:a 距離自己是 0.9998,距離 b 是 0.7741

intfloat/multilingual-e5-small : a 距離自己是 0.9999,距離 b 是 0.9333

英文實驗語句:

c. 『Warm and touching family comedy**』**

d. 『Mafia gang intrigues**』**

sentence-transformers/all-MiniLM-L6-v2 : c 距離自己是 0.9999,距離 d 是 0.5882

intfloat/multilingual-e5-small : c 距離自己是 0.9999,距離 d 是 0.9111

基於這兩個模型是完全不同的東西,他們的 similarity 分數是不能比較的,所以也不知道該怎麼辦,如果有人看到這,歡迎給我一些除錯的建議。


上一篇
2024 鐵人賽 Day22:ES as Vector DB II
下一篇
2024 鐵人賽 Day24: KNN + text search
系列文
重新開始 elasticsearch 29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言